/*
    ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
                 2011,2012 Giovanni Di Sirio.

    This file is part of ChibiOS/RT.

    ChibiOS/RT is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.

    ChibiOS/RT is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

        .text
        .p2align 1, 0
        .weak   _port_switch
_port_switch:
         push    r11
         push    r10
         push    r9
         push    r8
         push    r7
         push    r6
         push    r5
         push    r4
         mov r1, 6(r14)
         mov 6(r15), r1
         pop     r4
         pop     r5
         pop     r6
         pop     r7
         pop     r8
         pop     r9
         pop     r10
         pop     r11
         ret

        .p2align 1, 0
        .weak   _port_thread_start
_port_thread_start:
         eint
         mov     r11, r15
         call    r10
         call    #chThdExit
         ; Falls into _port_halt

        .p2align 1, 0
        .weak   _port_halt
_port_halt:
        dint
.L1:    jmp     .L1
